/**
 * author : Frank Luo
 * editor : Bu Heng
 */
Ext.Loader.setConfig({
	enabled : true
});
// Ext.Loader.setPath('Ext.ux', '/TEX/resources/extjs/ux');
Ext.Loader.setPath('Ext.ux', ctx + '/resources/extjs/ux');
Ext.require([ 'Ext.ux.form.MultiSelect', 'Ext.ux.form.ItemSelector' ]);

Ext.define('HIT.view.SetRuleSplitWin', {
	extend : 'Ext.window.Window',
	alias : 'widget.splitWin',
	id : 'splitWin',
	height : 548,
	width : 605,
	autoScroll:true,
	resizable:false,
	overlapHeader : false,
	preventHeader : true,
	title : Share.T('拆分'),

	initComponent : function() {
		var me = this;
		var myId=1;
		var control=0;
		this.title = Share.T('拆分');


		Ext.applyIf(me, {
			items : new Ext.form.Panel({
				xtype : 'fieldset',
				id:'split_form',//验证页面是否有错误项的ID
				items : [ 
				    {//设置隐藏域放置判断页面是执行增加，还是修改
		            xtype: 'hiddenfield',
		            id: 'split_rule_id',
		            value: -1
		            },{//第一个框 
					xtype : 'fieldset',
					border:false,
					layout : {
						type : 'absolute'
					},
					height : 130,
					items : [ {
						xtype : 'label',
						x : 5,
						y : 20,
						height : 15,
						text : Share.T('规则ID') + ':'
					}, {
						xtype : 'label',
						id:"split_rule_detail_id",
						x : 50,
						y : 20,
						height : 15,
						text : ''
					}, {
						xtype : 'label',
						x : 95,
						y : 20,
						height : 15,
						text : Share.T('规则类型') + ':      ' + Share.T('拆分')
					},
					{
			        	xtype : 'combobox',
			        	x : 255,
						y : 17,
						width:240,
						labelWidth:80,
						editable : false,
						fieldLabel : Share.T('有效范围'),
						id : 'split_scopeFlag',
						valueField : 'value',
						displayField : 'text',
						value:'0',
						store: new Ext.data.JsonStore({  
	    					proxy: { 
	        	                type: 'ajax', 
	        	                url : ctx + '/getComboData',
	        	                params:{
	        	                },
	        	                reader: { 
	        	                    type: 'json', 
	        	                    totalProperty: '', 
	        	                    root: '' 
	        	                } 
	        	             }, 
	        	            fields:['text','value'], 
	        	            autoLoad:true 
				        }),
				        listeners : {
				        	beforerender:function(){
				        		this.store.removeAll();
				        		this.store.on('beforeload', function(store) {
				        			Ext.apply(store.proxy.extraParams , {
				        				type : 'rulescope'
				        			});
				        		});
				        		this.store.load();
				        	}
				       },
			          onChange:function(){
			        	  if(this.value=='1'){								
								Ext.getCmp('split_cust_code').setValue("");
								Ext.getCmp('split_cust_name').setValue("");
								Ext.getCmp('split_cust_code').disable();
								Ext.getCmp('split_cust_name').disable();
								Ext.getCmp('splittype').setDisabled(false);
							}else if (this.value == '2'){
								Ext.getCmp('split_cust_code').enable();
								Ext.getCmp('split_cust_name').enable();
								Ext.getCmp('splittype').setDisabled(true);
								Ext.getCmp('largest_amount_text').setValue('');
								Ext.getCmp('fixed_ratio_text1').setValue('');
								Ext.getCmp('fixed_ratio_text2').setValue('');
								Ext.getCmp('fixed_ratio_text3').setValue('');
								Ext.getCmp('fixed_ratio_text4').setValue('');
								Ext.getCmp('fixed_ratio_text5').setValue('');
							} else {
								Ext.getCmp('splittype').setDisabled(false);
							}
			          }
			      },
					{
						xtype : 'combobox',
						triggerAction : 'query',
						id:'split_cust_code',
						allowBlank : false,
						msgTarget  : 'side',
						x : 5,
						y : 50,
						labelWidth : 60,
						height : 15,
						width : 220,
						editable : true,
						minChars : 1,
						fieldLabel : Share.T('客户'),
						selectOnFocus : true,
						valueField : 'name',
						displayField : 'code',
						hideTrigger : true, // 隐藏下拉箭头
						typeAhead : false,
						queryDelay : 20,
						store : new Ext.data.JsonStore({
							proxy: { 
								type: 'ajax', 
								url : ctx + '/getCustInfo',
								params:{
								},
								reader: { 
									type: 'json', 
									totalProperty: '', 
									root: '' 
								} 
							}, 
						fields:['name','code'], 
      	            autoLoad:true 
			          }),
      				listeners : {
    					beforequery : function(e) {
        					var combo = e.combo;   
        					if(!e.forceAll){   
        						var value = e.query;   
        						combo.store.filterBy(function(record,id){   
        							var text = record.get(combo.displayField); 
        							return (text.indexOf(value)!=-1);   
        						});
        						combo.expand();   
        						return false;   
        					}
    					},
    					//选择后更改label的text
			      		select:function(e){
			      			var value=Ext.getCmp('split_cust_code').getValue();//得到此下拉框的value
        					Ext.getCmp("split_cust_name").setValue(value);//设定label的text
			      		}
    				}
					}, {//客户名称
						xtype : 'combobox',
						triggerAction : 'query',
						id:'split_cust_name',
						allowBlank : false,
						msgTarget  : 'side',
						hideTrigger : true, // 隐藏下拉箭头
						selectOnFocus : true,
						fieldLabel : Share.T('客户名称'),
						x : 255,
						y : 50,
						labelWidth : 80,
						height : 15,
						width : 240,
						text : "",
						valueField : 'code',
						displayField : 'name',
						typeAhead : false,
						queryDelay : 20,
						store : new Ext.data.JsonStore({
							proxy: { 
								type: 'ajax', 
								url : ctx + '/getCustInfo',
								params:{
								},
								reader: { 
									type: 'json', 
									totalProperty: '', 
									root: '' 
								} 
							}, 
						fields:['code','name'], 
      	            autoLoad:true 
			          }),
			          listeners : {
	    					beforequery : function(e) {
	        					var combo = e.combo;   
	        					if(!e.forceAll){   
	        						var value = e.query;   
	        						combo.store.filterBy(function(record,id){   
	        							var text = record.get(combo.displayField); 
	        							return (text.indexOf(value)!=-1);   
	        						});
	        						combo.expand();   
	        						return false;   
	        					}
	    					},
	    					//选择后更改label的text
				      		select:function(e){
				      			var value=Ext.getCmp('split_cust_name').getValue();//得到此下拉框的value
	        					Ext.getCmp("split_cust_code").setValue(value);//设定label的text
				      		}
	    				}
					}, {
						xtype : 'textfield',
						id:'split_remark',
						x : 5,
						y : 80,
						width : 490,
						fieldLabel : Share.T('备注'),
						labelWidth : 60,
						maxLength : 100,
						msgTarget  : 'side'
					} ]
				}, {//拆分条件
					xtype : 'fieldset',
					title : Share.T('拆分条件'),
					x:10,
					width:500,
					id:'condition',
					items : [ {
						xtype : 'panel',
						margin: '10 0 10',
						id:'fieldset'+myId,
						layout : {
							type : 'absolute'
						},
						border : false,
						height: 24,
						items : [ {
							xtype : 'combobox',
							id:'split_condition_project'+myId,
							triggerAction : 'all',
							x : 30,
							width : 110,
							msgTarget  : 'side',
							editable:false,
							minChars : 1,
							selectOnFocus : true,
							valueField : 'value',
							displayField : 'code',
							queryMode: 'local',
							editable : false,
							typeAhead : false,
							queryDelay : 20,
							store : new Ext.data.JsonStore({
								proxy: {
									type: 'ajax', 
									url : ctx + '/getCommonConditions',
									params:{},
									reader: { 
										type: 'json', 
										totalProperty: '', 
										root: '' 
									} 
								}, 
								fields:['value','code'],
								autoLoad:true
							}),
							listeners : {
								expand : function(field, e) {
									var store = field.store; 
									if(!field.forceAll){
										store.filterBy(function(record,id){   
											var text = record.get(field.valueField); 
											return (text.indexOf('D_'));   
										});
									}
								}
							}
						}, {
							xtype : 'combobox',
							triggerAction : 'all',
							id:'split_condition_choice'+myId,
							x : 160,
							width : 70,
							editable : true,
							minChars : 1,
							selectOnFocus : true,
							valueField : 'value',
							displayField : 'condition',
							editable : false,
							typeAhead : false,
							queryDelay : 20,
							msgTarget  : 'side',
							store : new Ext.data.JsonStore({
								proxy: { 
									type: 'ajax', 
									url : ctx + '/getCondition',
									params:{ 								
									},
									reader: { 
										type: 'json', 
										totalProperty: '', 
										root: '' 
									} 
								}, 
							fields:['condition','value'], 
	      	                autoLoad:true 
				          })
						}, {
							xtype : 'textfield',
							id:'split_condition_value'+myId,
							msgTarget  : 'side',
							maxLength : 200,
							x : 250,
							width : 110
						}, {
							xtype : 'button',
							x : 390,
							width : 60,
							text : Share.T('删除'),
							onClick:function(){
								var condition=Ext.getCmp('condition');
								condition.remove(this.findParentByType('panel'));
								control--;
							}
						} ]
					},{
						xtype : 'panel',
						margin: '10 0 10',
						layout : {
							type : 'absolute'
						},
						height: 24,
						border:false,
						items : [ {
							xtype : 'button',
							x : 390,
							width : 60,
							id:'split_condition_add',
							text : Share.T('增加'),
							handler:function(){
								myId++;
								var newField=new Ext.form.Panel({
									xtype : 'panel',
									margin: '10 0 10',
									id:'fieldset'+myId,
									layout : {
										type : 'absolute'
									},
									border : false,
									height: 24,
									items : [ {
										xtype : 'combobox',
										id:'split_condition_project'+myId,
										triggerAction : 'all',
										x : 30,
										width : 110,
										editable : true,
										minChars : 1,
										selectOnFocus : true,
										valueField : 'value',
										displayField : 'code',
										editable : false,
										typeAhead : false,
										queryMode: 'local',
										queryDelay : 20,
										msgTarget  : 'side',
										store : new Ext.data.JsonStore({
											proxy: { 
												type: 'ajax', 
												url : ctx + '/getCommonConditions',
												params:{ 								
												},
												reader: { 
													type: 'json', 
													totalProperty: '', 
													root: '' 
												} 
											}, 
											fields:['value','code'], 
				      	                	autoLoad:true 
										}),
							          	listeners : {
											expand : function(field, e) {
												var store = field.store; 
												if(!field.forceAll){
													store.filterBy(function(record,id){   
														var text = record.get(field.valueField); 
														return (text.indexOf('D_'));   
													});
												}
											}
										}
									}, {
										xtype : 'combobox',
										id:'split_condition_choice'+myId,
										triggerAction : 'all',
										x : 160,
										width : 70,
										editable : true,
										minChars : 1,
										selectOnFocus : true,
										valueField : 'value',
										displayField : 'condition',
										editable : false,
										typeAhead : false,
										queryDelay : 20,
										msgTarget  : 'side',
										store : new Ext.data.JsonStore({
											proxy: { 
												type: 'ajax', 
												url : ctx + '/getCondition',
												params:{ 								
												},
												reader: { 
													type: 'json', 
													totalProperty: '', 
													root: '' 
												} 
											}, 
										fields:['condition','value'], 
				      	                autoLoad:true 
							          })
									}, {
										xtype : 'textfield',
										id:'split_condition_value'+myId,
										msgTarget  : 'side',
										maxLength : 200,
										x : 250,
										width : 110
									}, {
										xtype : 'button',
										x : 390,
										width : 60,
										text : Share.T('删除'),
										onClick:function(){
											var condition=Ext.getCmp('condition');
											condition.remove(this.findParentByType('panel'));
											control--;
										}
									} ]
								});
								control++;
								Ext.getCmp('condition').insert(control,newField);       
								Ext.getCmp('condition').doLayout();  
							}
						} ]
					} ]
				}, {//拆分方式
					xtype : 'fieldset',
					x:10,
					id : 'splittype',
					height : 110,
					width:500,
					layout : {
						type : 'absolute'
					},
					title : Share.T('拆分方式'),
					items : [ {
						xtype : 'radio',
						boxLabel: Share.T('最大金额拆分金额'),
						name : 'radio_select',	
						id : 'largest_amount',
						x : 10,
						inputValue:'0',
						checked:true,
						listeners : {
							beforerender : function(){
								if(this.checked==true)
								{
								 this.handler();
								}
							}
						},
						handler : function(){
							if(this.checked==true){
								if(Ext.getCmp('split_scopeFlag').getValue()!='2'){
									Ext.getCmp('largest_amount_text').enable();
								}
							
								Ext.getCmp('fixed_ratio_text1').disable();
								Ext.getCmp('fixed_ratio_text2').disable();
								Ext.getCmp('fixed_ratio_text3').disable();
								Ext.getCmp('fixed_ratio_text4').disable();
								Ext.getCmp('fixed_ratio_text5').disable();
								
								Ext.getCmp('fixed_ratio_text1').setValue('');
								Ext.getCmp('fixed_ratio_text2').setValue('');
								Ext.getCmp('fixed_ratio_text3').setValue('');
								Ext.getCmp('fixed_ratio_text4').setValue('');
								Ext.getCmp('fixed_ratio_text5').setValue('');
							}
						}
					},
					{
						xtype : 'numberfield',
						id : 'largest_amount_text',
						hideTrigger : true,
						allowBlank : false,
						allowDecimals : true,
						decimalPrecision : 2, // 小数位精度 
						allowNegative : false, // 不允许输入负数
						maxValue : 99999999.99,
						minValue : 0.01,
						msgTarget : 'side',
						maxText:Share.T('请输入合法有效的值'),
						minText:Share.T('请输入合法有效的值'),
						x : 190,
						width : 180
					},
					{
						xtype : 'radio',
						boxLabel: Share.T('固定比率拆分金额'),
						name  : 'radio_select',	
						id:'fixed_ratio',
						x : 10,
						y : 40,
						inputValue:'1',
						handler : function(){
							if(this.checked==true){
								if(Ext.getCmp('split_scopeFlag').getValue()!='2'){
									Ext.getCmp('fixed_ratio_text1').enable();
									Ext.getCmp('fixed_ratio_text2').enable();
									Ext.getCmp('fixed_ratio_text3').enable();
									Ext.getCmp('fixed_ratio_text4').enable();
									Ext.getCmp('fixed_ratio_text5').enable();
								}
							Ext.getCmp('largest_amount_text').disable();
							
							Ext.getCmp('largest_amount_text').setValue('');
							}
						}
					},{
						xtype : 'numberfield',
						id : 'fixed_ratio_text1',
						maxLength : 4,
						maxValue:99.9,
						minValue:0.1,
						hideTrigger:true,
						msgTarget  : 'qtip',
						allowNegative:false,
						allowBlank : false,
						maxText:Share.T('无效的拆分方式'),
						minText:Share.T('无效的拆分方式'),
						x : 190,
						y : 40,
						width : 30
					}, {
						xtype : 'label',
						x : 222,
						y : 45,
						text : '%'
					}, {
						xtype : 'numberfield',
						id : 'fixed_ratio_text2',
						maxLength : 4,
						maxValue:99.9,
						hideTrigger:true,
						msgTarget  : 'qtip',
						allowNegative:false,
						maxText:Share.T('无效的拆分方式'),
						x : 250,
						y : 40,
						width : 30
					}, {
						xtype : 'label',
						x : 282,
						y : 45,
						text : '%'
					}, {
						xtype : 'numberfield',
						id : 'fixed_ratio_text3',
						maxLength : 4,
						maxValue:99.9,
						hideTrigger:true,
						msgTarget  : 'qtip',
						allowNegative:false,
						maxText:Share.T('无效的拆分方式'),
						x : 310,
						y : 40,
						width : 30
					}, {
						xtype : 'label',
						x : 342,
						y : 45,
						text : '%'
					}, {
						xtype : 'numberfield',
						id : 'fixed_ratio_text4',
						maxLength : 4,
						maxValue:99.9,
						hideTrigger:true,
						msgTarget  : 'qtip',
						allowNegative:false,
						maxText:Share.T('无效的拆分方式'),
						x : 370,
						y : 40,
						width : 30
					}, {
						xtype : 'label',
						x : 402,
						y : 45,
						text : '%'
					}, {
						xtype : 'numberfield',
						id : 'fixed_ratio_text5',
						maxLength : 4,
						maxValue:99.9,
						hideTrigger:true,
						msgTarget  : 'qtip',
						allowNegative:false,
						maxText:Share.T('无效的拆分方式'),
						x : 430,
						y : 40,
						width : 30
					}, {
						xtype : 'label',
						x : 462,
						y : 45,
						text : '%'
					} ]
				},
				{//转换处理
					xtype : 'fieldset',
					height : 88,
					x:10,
					width:533,
					layout : {
						type : 'absolute'
					},
					title : Share.T('转换处理'),
					items : [ {
						xtype : 'combobox',
						id:'split_conversion_combo01',
						editable:false,//下拉列表不允许输入
						fieldLabel : Share.T('数量'),
						labelWidth : 40,
						triggerAction:"all",
						msgTarget:"qtip",
						x : 5,
						y : 5,
						width : 120,
						height : 15,
						selectOnFocus : true,
						valueField : 'value',
						displayField : 'text',
						typeAhead : false,
						queryDelay : 20,
						queryMode:'local',
						value:'00',
						store: new Ext.data.JsonStore({  
	    					proxy: { 
	        	                type: 'ajax', 
	        	                url : ctx + '/getComboData',
	        	                params:{
	        	                },
	        	                reader: { 
	        	                    type: 'json', 
	        	                    totalProperty: '', 
	        	                    root: '' 
	        	                } 
	        	             }, 
	        	            fields:['text','value'], 
	        	            autoLoad:true 
				        }),
				        listeners : {
				        	beforerender:function(){
				        		this.store.removeAll();
				        		this.store.on('beforeload', function(store) {
				        			Ext.apply(store.proxy.extraParams , {
				        				type : 'ruleadjust'
				        			});
				        		});
				        		this.store.load();
				        	},
				        	expand : function(field, e) {
				        		this.store.filterBy(function(record,id){
				        			var retValue = record.get("value");
				                     if(retValue == '00' || retValue == '06'){
				                         return true;
				                     }
				        		});
				        	}
				        },
						onChange:function(){
							if(this.value == '00'){
								Ext.getCmp('split_conversion_combo02').setValue("06");
							} else if (this.value == '06') {
								Ext.getCmp('split_conversion_combo02').setValue("00");
							}
						}
					}, {
						xtype : 'textfield',
						x : 135,
						y : 5,
						maxLength:200,
						msgTarget:"qtip",
						width : 100,
						disabled:true
					}, {
						xtype : 'combobox',
						id:'split_conversion_combo02',
						editable:false,//下拉列表不允许输入
						fieldLabel : Share.T('单价'),
						labelWidth : 40,
						triggerAction:"all",
						msgTarget:"qtip",
						x : 275,
						y : 5,
						width : 120,
						height : 15,
						minChars : 1,
						selectOnFocus : true,
						valueField : 'value',
						displayField : 'text',
						typeAhead : false,
						queryDelay : 20,
						queryMode:'local',
						value:'06',
						store: new Ext.data.JsonStore({  
	    					proxy: { 
	        	                type: 'ajax', 
	        	                url : ctx + '/getComboData',
	        	                params:{
	        	                },
	        	                reader: { 
	        	                    type: 'json', 
	        	                    totalProperty: '', 
	        	                    root: '' 
	        	                } 
	        	             }, 
	        	            fields:['text','value'], 
	        	            autoLoad:true 
				        }),
				        listeners : {
				        	beforerender:function(){
				        		this.store.removeAll();
				        		this.store.on('beforeload', function(store) {
				        			Ext.apply(store.proxy.extraParams , {
				        				type : 'ruleadjust'
				        			});
				        		});
				        		this.store.load();
				        	},
				        	expand : function(field, e) {
				        		this.store.filterBy(function(record,id){
				        			var retValue = record.get("value");
				                     if(retValue == '00' || retValue == '06'){
				                         return true;
				                     }
				        		});
				        	}
				        },
						onChange:function(){
							if(this.value=='00'){
								Ext.getCmp('split_conversion_combo01').setValue("06");
							} else if (this.value=='06') {
								Ext.getCmp('split_conversion_combo01').setValue("00");
							}
						}
					} , {
						xtype : 'textfield',
						x : 405,
						y : 5,
						maxLength:200,
						msgTarget:"qtip",
						width : 100,
						disabled:true
					}]
				} ]
			}),
			buttons : [{
				xtype : 'button',
				id:'split_save',
				width : 45,
				text : Share.T('保存')
			}, {
				xtype : 'button',
				id:'split_copy',
				width : 45,
				text : Share.T('复制'),
				handler : function() {
					if(Ext.getCmp('split_rule_id').getValue() != -1)
						{
						   Ext.getCmp('split_rule_detail_id').setText('');
						   this.disable();
						   Ext.getCmp('split_delete').disable();
						   Ext.getCmp('split_rule_id').setValue(-1);
						   Ext.getCmp('split_scopeFlag').enable();
						  if(Ext.getCmp('split_scopeFlag').getValue() != 1)
						  {
						   Ext.getCmp('split_cust_code').enable();
						   Ext.getCmp('split_cust_name').enable();
						}
					}
					Share.ShowMessage('I0057');
				}
			},{
				xtype : 'button',
				id:'split_delete',
				width : 45,
				text : Share.T('删除')
			}, {
				xtype : 'button',
				id:'split_close',
				width : 45,
				text : Share.T('取消')
			}]
		});
		me.callParent(arguments);
	}
});


